home *** CD-ROM | disk | FTP | other *** search
- /* ALP LISTING POST-PROCESSOR - VERSION 3.0 - 11/13/80 */ 00001000
- 00002000
- POSTALP: PROC OPTIONS(MAIN) REORDER; 00003000
- 00009000
- /* ALP LISTING FILE DEFINITION */ 00010000
- 00011000
- DECLARE 00012000
- ALPPRINT INTERNAL FILE RECORD INPUT ENV(FB,RECSIZE(133),TOTAL), 00013000
- ALP_LINE CHAR(133) STATIC INIT('+'), 00014000
- ALP_CC CHAR(1) POS(1) DEF(ALP_LINE), 00015000
- ALP_TEXT CHAR(132) POS(2) DEF(ALP_LINE), 00016000
- ALP_NUM CHAR(8) POS(8) DEF(ALP_LINE), 00017000
- ALP_EOF BIT(1) STATIC ALIGNED INIT('0'B), 00018000
- NOFLAGGED CHAR(132) STATIC INIT('NO ALP STATEMENTS FLAGGED.'); 00019000
- 00020000
- /* ASSEMBLER LISTING FILE DEFINITION */ 00021000
- 00022000
- DECLARE 00023000
- ASMPRINT INTERNAL FILE RECORD INPUT ENV(FB,RECSIZE(121),TOTAL), 00024000
- ASM_EOF BIT(1) INIT('0'B) STATIC ALIGNED, 00025000
- ASM_LINE CHAR(121) STATIC INIT('1'), 00026000
- ASM_CC CHAR(1) POS(1) DEF(ASM_LINE), 00027000
- ASM_TEXT CHAR(120) POS(2) DEF(ASM_LINE), 00028000
- ASM_LOC CHAR(6) POS(2) DEF(ASM_LINE), 00029000
- ASM_PLUS CHAR(1) POS(41) DEF(ASM_LINE), 00031000
- ASM_NUM CHAR(8) POS(114) DEF(ASM_LINE), 00033000
- ASM_SUBHEAD CHAR(56) POS(4) DEF(ASM_LINE), 00034000
- ASM_ERROR CHAR(13) POS(13) DEF(ASM_LINE), 00035000
- ASM_LASTCC CHAR(1) STATIC INIT('1'), 00038000
- SUBHEAD CHAR(56) STATIC 00039000
- INIT('LOC OBJECT CODE ADDR1 ADDR2 STMT SOURCE STATEMENT'), 00040000
- ERROR_FLAG CHAR(13) STATIC INIT('*** ERROR ***'), 00041000
- MNOTE_FLAG CHAR(13) STATIC INIT('*** MNOTE ***'), 00042000
- WARNING_FLAG CHAR(13) STATIC INIT('** WARNING **'), 00042100
- FLAGGED CHAR(35) STATIC INIT(' FLAGGED IN THIS ASSEMBLY'); 00043000
- 1 00044000
- /* COMPOSITE LISTING FILE DEFINITION */ 00045000
- 00046000
- DECLARE 00047000
- NEWPRINT INT FILE RECORD OUTPUT ENV(FB,RECSIZE(140),CTLASA,TOTAL), 00048000
- NEW_PTR POINTER STATIC, 00049000
- NEW_LINE CHAR(140) BASED(NEW_PTR), 00050000
- NEW_LOC CHAR(6) STATIC INIT(' '), 00051000
- NEW_NUM CHAR(8) STATIC INIT(' '); 00052000
- 00053000
- /* ALTERNATE ASSEMBLY LISTING FILE DEFINITION */ 00054000
- 00055000
- DECLARE 00056000
- ALTPRINT INT FILE RECORD OUTPUT ENV(FB,RECSIZE(121),CTL360,TOTAL), 00057000
- ALT_PTR POINTER STATIC INIT(NULL()), 00058000
- ALT_LINE CHAR(121) BASED(ALT_PTR), 00059000
- ALT_CC CHAR(1) BASED(ALT_PTR), 00060000
- ALT_SW BIT(1) STATIC ALIGNED INIT('1'B), 00061000
- CC CHAR(5) STATIC INIT(' 10-+'), 00062000
- CCMC(5) BIT(8) INIT('00001001'B,'10001001'B,'00010001'B, 00063000
- '00011001'B,'00000001'B) STATIC ALIGNED, 00064000
- CCMCNP(5) BIT(8) INIT('00001011'B,'10001011'B,'00010011'B, 00065000
- '00011011'B,'00000011'B) STATIC ALIGNED; 00066000
- 1 00078000
- OPEN FILE(SYSPRINT) TITLE('POSTERR'); 00079000
- 00087000
- OPEN FILE(ALPPRINT) TITLE('SYSPRINT'); 00088000
- ON ENDFILE(ALPPRINT) BEGIN; 00089000
- ALP_EOF='1'B; 00090000
- GO TO NO_ALP; 00091000
- END; 00092000
- 00093000
- OPEN FILE(ASMPRINT); 00094000
- ON ENDFILE(ASMPRINT) BEGIN; 00095000
- ASM_EOF='1'B; 00096000
- NEW_LOC=''; 00097000
- GO TO FINISH_ALP; 00098000
- END; 00099000
- 00100000
- OPEN FILE(NEWPRINT); 00101000
- 00112000
- ON UNDEFINEDFILE(ALTPRINT) ALT_SW='0'B; 00113000
- OPEN FILE(ALTPRINT); 00114000
- 1 00115000
- /* GET INITIAL POSITION IN ALP LISTING */ 00116000
- 00117000
- READ FILE(ALPPRINT) INTO(ALP_LINE); 00118000
- IF (ALP_CC='1') THEN DO; 00119000
- LOCATE NEW_LINE FILE(NEWPRINT); 00120000
- NEW_LINE = ALP_LINE; 00121000
- READ FILE(ALPPRINT) INTO(ALP_LINE); 00122000
- END; 00123000
- LOCATE NEW_LINE FILE(NEWPRINT); 00124000
- NEW_LINE = ALP_LINE; 00125000
- 00126000
- NO_ALP: 00127000
- 1 00128000
- /* GET INITIAL POSITION IN ASSEMBLY LISTING */ 00129000
- 00130000
- DO WHILE(ASM_CC='1' | UNSPEC(ASM_CC)='10001001'B 00131000
- | UNSPEC(ASM_CC)='10001011'B); 00132000
- DO WHILE(ASM_SUBHEAD^=SUBHEAD | UNSPEC(ASM_CC)='10001001'B 00133000
- | UNSPEC(ASM_CC)='10001011'B); 00134000
- ASM_LASTCC=ASM_CC; 00135000
- READ FILE(ASMPRINT) INTO(ASM_LINE); 00136000
- IF ALT_SW THEN DO; 00137000
- IF INDEX(CC,ASM_CC)>0 THEN DO; 00138000
- IF ALT_PTR=NULL() THEN DO; 00139000
- LOCATE ALT_LINE FILE(ALTPRINT); 00140000
- ALT_LINE=''; 00141000
- UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00142000
- END; 00143000
- ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00144000
- END; 00145000
- LOCATE ALT_LINE FILE(ALTPRINT); 00146000
- ALT_LINE = ASM_LINE; 00147000
- END; 00148000
- END; 00152000
- ASM_LASTCC=ASM_CC; 00153000
- READ FILE(ASMPRINT) INTO(ASM_LINE); 00154000
- IF ALT_SW THEN DO; 00155000
- IF INDEX(CC,ASM_CC)>0 THEN DO; 00156000
- IF ALT_PTR=NULL() THEN DO; 00157000
- LOCATE ALT_LINE FILE(ALTPRINT); 00158000
- ALT_LINE=''; 00159000
- UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00160000
- END; 00161000
- ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00162000
- END; 00163000
- LOCATE ALT_LINE FILE(ALTPRINT); 00164000
- ALT_LINE = ASM_LINE; 00165000
- END; 00166000
- END; 00170000
- 00204000
- ON ENDFILE(ALPPRINT) BEGIN; 00205000
- ALP_EOF='1'B; 00206000
- GO TO EOF_ALP; 00207000
- END; 00208000
- 00209000
- IF ALP_EOF THEN GO TO EOF_ALP; 00210000
- 1 00211000
- DO WHILE('1'B); 00212000
- 00213000
- /* READ A LINE FROM THE ALP LISTING */ 00214000
- 00215000
- NEXT_ALP: 00216000
- READ FILE(ALPPRINT) INTO(ALP_LINE); 00217000
- 00218000
- /* SKIP BLANK LINES, ETC. */ 00219000
- 00220000
- IF (ALP_TEXT='') THEN DO; 00221000
- LOCATE NEW_LINE FILE(NEWPRINT); 00222000
- NEW_LINE = ALP_LINE; 00223000
- GO TO NEXT_ALP; 00224000
- END; 00225000
- 00226000
- /* TEST FOR END OF ALP STATEMENTS */ 00227000
- 00228000
- IF (ALP_TEXT=NOFLAGGED) THEN DO; 00229000
- GO TO FINAL_ALP; 00230000
- END; 00231000
- 00232000
- /* SKIP TITLES */ 00233000
- 00234000
- IF (ALP_CC='1') THEN DO; 00235000
- LOCATE NEW_LINE FILE(NEWPRINT); 00236000
- NEW_LINE=ALP_LINE; 00237000
- READ FILE(ALPPRINT) INTO(ALP_LINE); /* SUBTITLE */ 00238000
- LOCATE NEW_LINE FILE(NEWPRINT); 00239000
- NEW_LINE=ALP_LINE; 00240000
- GO TO NEXT_ALP; 00241000
- END; 00242000
- 1 00243000
- /* FIND SAME LINE NUMBER IN ASSEMBLER LISTING */ 00244000
- 00245000
- IF (ALP_NUM>NEW_NUM) THEN NEW_LOC=''; 00246000
- DO WHILE(ALP_NUM>NEW_NUM | NEW_NUM='' | NEW_LOC=''); 00247000
- 00248000
- /* READ ANOTHER LINE FROM THE ASSEMBLY LISTING */ 00249000
- 00250000
- READ FILE(ASMPRINT) INTO(ASM_LINE); 00251000
- IF ALT_SW THEN DO; 00252000
- IF INDEX(CC,ASM_CC)>0 THEN DO; 00253000
- IF ALT_PTR=NULL() THEN DO; 00254000
- LOCATE ALT_LINE FILE(ALTPRINT); 00255000
- ALT_LINE=''; 00256000
- UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00257000
- END; 00258000
- ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00259000
- END; 00260000
- LOCATE ALT_LINE FILE(ALTPRINT); 00261000
- ALT_LINE = ASM_LINE; 00262000
- END; 00263000
- 1 00264000
- /* SKIP HEADINGS IN LISTING WITH ASA CARRIAGE CONTROL */ 00265000
- 00266000
- DO WHILE(ASM_CC='1'); 00267000
- DO WHILE(ASM_SUBHEAD^=SUBHEAD); 00268000
- READ FILE(ASMPRINT) INTO(ASM_LINE); 00273000
- IF ALT_SW THEN DO; 00274000
- IF INDEX(CC,ASM_CC)>0 THEN DO; 00275000
- IF ALT_PTR=NULL() THEN DO; 00276000
- LOCATE ALT_LINE FILE(ALTPRINT); 00277000
- ALT_LINE=''; 00278000
- UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00279000
- END; 00280000
- ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00281000
- END; 00282000
- LOCATE ALT_LINE FILE(ALTPRINT); 00283000
- ALT_LINE = ASM_LINE; 00284000
- END; 00285000
- END; 00286000
- READ FILE(ASMPRINT) INTO(ASM_LINE); 00291000
- IF ALT_SW THEN DO; 00292000
- IF INDEX(CC,ASM_CC)>0 THEN DO; 00293000
- IF ALT_PTR=NULL() THEN DO; 00294000
- LOCATE ALT_LINE FILE(ALTPRINT); 00295000
- ALT_LINE=''; 00296000
- UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00297000
- END; 00298000
- ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00299000
- END; 00300000
- LOCATE ALT_LINE FILE(ALTPRINT); 00301000
- ALT_LINE = ASM_LINE; 00302000
- END; 00303000
- END; 00304000
- 1 00338000
- /* CHECK IF VALID LOCATION COUNTER VALUE IS PRESENT */ 00339000
- 00340000
- IF (ASM_PLUS^='+') & (ASM_NUM^='') & (ASM_NUM^='00000000') 00341000
- & (ASM_ERROR^=ERROR_FLAG) & (ASM_ERROR^=MNOTE_FLAG) 00342000
- & (ASM_ERROR^=WARNING_FLAG) THEN NEW_NUM=ASM_NUM; 00343000
- IF ASM_LOC^='' & (ALP_NUM<=NEW_NUM | NEW_NUM='') 00344000
- & (ASM_ERROR^=ERROR_FLAG) & (ASM_ERROR^=MNOTE_FLAG) 00345000
- & (ASM_ERROR^=WARNING_FLAG) THEN NEW_LOC=ASM_LOC; 00346000
- 00347000
- /* SKIP HEADINGS IN LISTING WITH MACHINE CARRIAGE CONTROL */ 00348000
- 00349000
- DO WHILE(UNSPEC(ASM_CC)='10001001'B|UNSPEC(ASM_CC)='10001011'B); 00350000
- DO WHILE(ASM_SUBHEAD^=SUBHEAD | UNSPEC(ASM_CC)='10001001'B 00351000
- | UNSPEC(ASM_CC)='10001011'B); 00352000
- READ FILE(ASMPRINT) INTO(ASM_LINE); 00357000
- IF ALT_SW THEN DO; 00358000
- IF INDEX(CC,ASM_CC)>0 THEN DO; 00359000
- IF ALT_PTR=NULL() THEN DO; 00360000
- LOCATE ALT_LINE FILE(ALTPRINT); 00361000
- ALT_LINE=''; 00362000
- UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00363000
- END; 00364000
- ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00365000
- END; 00366000
- LOCATE ALT_LINE FILE(ALTPRINT); 00367000
- ALT_LINE = ASM_LINE; 00368000
- END; 00369000
- END; 00370000
- END; 00371000
- 00372000
- /* IF WE HAVE A GOOD LOCATION COUNTER VALUE, PRINT ALP LINE */ 00373000
- 00374000
- IF (ALP_NUM<=NEW_NUM & NEW_NUM^='' & NEW_LOC^='') 00375000
- THEN GO TO OUTPUT; 00376000
- END; 00377000
- 00378000
- /* WRITE NEW LISTING LINE */ 00379000
- 00380000
- OUTPUT: 00381000
- LOCATE NEW_LINE FILE(NEWPRINT); 00382000
- NEW_LINE = ALP_CC||NEW_LOC||' '||ALP_TEXT; 00383000
- END; 00384000
- 1 00385000
- /* PROCESS REMAINDER OF ALP LISTING */ 00386000
- 00387000
- FINISH_ALP: 00388000
- 00389000
- IF ALP_EOF THEN GO TO EOF_ALP; 00390000
- 00391000
- IF ALP_LINE='+' THEN READ FILE(ALPPRINT) INTO(ALP_LINE); 00392000
- DO WHILE(ALP_TEXT^=NOFLAGGED); 00393000
- LOCATE NEW_LINE FILE(NEWPRINT); 00394000
- NEW_LINE = ALP_CC||NEW_LOC||' '||ALP_TEXT; 00395000
- READ FILE(ALPPRINT) INTO(ALP_LINE); 00396000
- END; 00397000
- 00398000
- FINAL_ALP: 00399000
- 00400000
- IF ALP_EOF THEN GO TO EOF_ALP; 00401000
- 00402000
- DO WHILE('1'B); 00403000
- LOCATE NEW_LINE FILE(NEWPRINT); 00404000
- NEW_LINE = ALP_LINE; 00405000
- READ FILE(ALPPRINT) INTO(ALP_LINE); 00406000
- END; 00407000
- 00408000
- EOF_ALP: 00409000
- 1 00410000
- /* PROCESS REMAINDER OF ASSEMBLY LISTING */ 00411000
- 00412000
- IF ALT_SW & ^ASM_EOF THEN DO; 00413000
- ON ENDFILE(ASMPRINT) GO TO EOF_ASM; 00414000
- DO WHILE('1'B); 00415000
- READ FILE(ASMPRINT) INTO(ASM_LINE); 00416000
- IF ALT_SW THEN DO; 00417000
- IF INDEX(CC,ASM_CC)>0 THEN DO; 00418000
- IF ALT_PTR=NULL() THEN DO; 00419000
- LOCATE ALT_LINE FILE(ALTPRINT); 00420000
- ALT_LINE=''; 00421000
- UNSPEC(ALT_CC)=CCMCNP(INDEX(CC,ASM_CC)); 00422000
- END; 00423000
- ELSE UNSPEC(ALT_CC)=CCMC(INDEX(CC,ASM_CC)); 00424000
- END; 00425000
- LOCATE ALT_LINE FILE(ALTPRINT); 00426000
- ALT_LINE = ASM_LINE; 00427000
- END; 00428000
- END; 00532000
- END; 00533000
- 1 00534000
- EOF_ASM: 00535000
- 00536000
- /* RETURN TO CALLER */ 00537000
- 00538000
- CLOSE FILE(ALPPRINT),FILE(ASMPRINT),FILE(NEWPRINT); 00539000
- IF ALT_SW THEN DO; 00541000
- IF ALT_PTR^=NULL() THEN IF INDEX(CC,ALT_CC)>0 THEN DO; 00542000
- UNSPEC(ALT_CC)='00000001'B; 00543000
- END; 00544000
- CLOSE FILE(ALTPRINT); 00545000
- END; 00546000
- 00547000
- CALL PLIRETC(0); 00548000
- END POSTALP; 00549000
-